package juego;
import java.awt.Color;
import java.awt.Image;
import java.io.IOException;

import exceptions.OrigenException;
import graphic.ImageUtils;

/**
 * Clase origen
 * @author Daniel Goldberg, Maria Eugenia Cura.
 */
public class Origen extends Elemento{
	/** Color del origen. */
	private Color color;
	
	/** Rotacion del origen */
	private int rotacion;

	/**
	 * Inicializa un nuevo origen.
	 * 
	 * @param rot La rotacion
	 * @param rojo
	 * @param verde
	 * @param azul
	 * 
	 * @throws OrigenException lanza una excepcion origen exception
	 */
	public Origen(int rot, int rojo, int verde, int azul) throws OrigenException{
		if(!validarRotacion(rot))
			throw new OrigenException("El origen tiene que tener rotacion entre 0 y 3.");
		this.rotacion=rot;
		try{
			this.color = new Color(rojo, verde, azul);
		}catch(IllegalArgumentException e){
			throw new OrigenException("El origen tiene mal los colores.");
		}
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	public String toString(){
		return "O";//R "+color+" "+rotacion;
	}
	
	public String toStringGuardar(){
		return "1,"+ this.rotacion+","+this.color.getRed()+","+this.color.getGreen()+","+this.color.getBlue();
	}

	/**
	 * Validar rotacion.
	 * 
	 * @param rot la rotacion
	 * 
	 * @return true, si la rotacion es valida
	 */
	public boolean validarRotacion(int rot){
		if( rot>=0 | rot<=3 )
			return true;
		return false;
	}
	
	/* (non-Javadoc)
	 * @see juego.Elemento#dibujar()
	 */
	@Override
	public Image dibujar() {
		Image img1, img2, img3 = null;
		try {
			img1 = ImageUtils.loadImage("resources/source.png");
			img2 = ImageUtils.replaceColor(img1, new Color(0, 0, 255), color);
			img3 = ImageUtils.rotateImage(img2, rotacion);
		} catch (IOException e) {
			System.out.println("Error para cargar la imagen.");			
		}
		return img3;
	}	
	
	/**
	 * devuelve la rotacion
	 * 
	 * @return rotacion
	 */
	public int getRotacion(){
		return rotacion;
	}
	
	/**
	 * Devuelve el color
	 * 
	 * @return color
	 */
	public Color getColor(){
		return this.color;
	}
	
	/* (non-Javadoc)
	 * @see juego.Elemento#getReturn(int)
	 */
	public int[] getReturn(int anterior) {
		int aux[]=new int[2];
		aux[0] = 1; 
		aux[1] = anterior;
		return aux;
	}
}